
#pragma once

#include <memory>
#include <vector>

class CPictureCtx
{

};

class CPictureSys
{

};

/* video picture */
class CPicture
{
public:
    /** Description of a planar graphic field */
    struct plane_t
    {
        uint8_t *p_pixels;                        /**< Start of the plane's data */

        /* Variables used for fast memcpy operations */
        int i_lines;           /**< Number of lines, including margins */
        int i_pitch;           /**< Number of bytes in a line, including margins */

        /** Size of a macropixel, defaults to 1 */
        int i_pixel_pitch;

        /* Variables used for pictures with margins */
        int i_visible_lines;            /**< How many visible lines are there ? */
        int i_visible_pitch;            /**< How many visible pixels are there ? */

    } plane_t;
    
    std::vector<plane_t> m_planeVec;
    //plane_t         p[PICTURE_PLANE_MAX];     /**< description of the planes */
    //int             i_planes;                /**< number of allocated planes */

    std::shared_ptr<CPictureCtx> m_spPicCtx;
    std::shared_ptr<CPictureSys> m_spPicSys;
};

class CSubPicture
{

};